<?php

/*-----------------------------------------------------------*\
|                 - Перевірка безпеки -                      |
|                 Author:  Skalden Russell                   |
|                 Last modify: 20130105                      |
\*-----------------------------------------------------------*/

if(!defined('TSUE_SEC')) 
{
	require_once('../../data/messages/hacking.attempt.php');
	die($TSUE_MSG);
}

class CSecurity 
{
	
	// Кодування тексту для зберігання в БД
	public function encode( $text )
	{
		$text = $this->deletexss( $text );
		
		if( function_exists( "get_magic_quotes_gpc" ) && get_magic_quotes_gpc() )
		{
			$text = stripslashes( $text );  
		}
		
		$text = addslashes( $text );
		$text = htmlspecialchars( $text, ENT_QUOTES );
		
		return $text;
	}
	
	// Декодування тексту для подальшого відображення
	public function decode( $text )
	{
		$text = htmlspecialchars_decode( $text );
		$text = stripslashes( $text ); 
		
		return $text;
	}
	
	// Видалення тегів <script> (Anti XSS)
	private function deletexss( $text )
	{
		$search = array(	"'<script[^>]*?>.*?</script>'si",
							"/script/i",  
							"/onclick/i",
							"/ondblclick/i",
							"/ondragstart/i",
							"/onhelp/i",
							"/onkeydown/i",
							"/onkeypress/i",
							"/onkeyup/i",
							"/keycode/i",
							"/onmousedown/i",
							"/onmousemove/i",
							"/onmouseout/i",
							"/onmouseover/i",
							"/onmouseup/i",
							"/onselectstart/i",
							"/javascript/i" );
							
		$replace = array(  	"xss",
							"scr1pt",
							"onc1ick",
							"ondblcl1ck",
							"0ndragstart",
							"onhe1p",
							"0nkeydown",
							"0nkeypress",
							"0nkeyup",
							"key_code",
							"0nmousedown",
							"0nmousemove",
							"0nmouseout",
							"0nmouseover",
							"0nmouseup",
							"0nse1ectstart",
							"javascr1pt" );
							
		$text = preg_replace($search, $replace, $text);
		
		return $text; 
	}
	
	// Перевірка чи є значення числом
	public function digit( $val )
	{
		if(!preg_match("/^[0-9]+$/", trim( $val ) ))
		{
			return 0;
		}
		
		return intval( $val );
	}
}


?>